home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 52498 / 52498.xpi / chrome / optimizegoogle.jar / content / optimizegoogle / cgpref.js < prev    next >
Text File  |  2009-11-03  |  14KB  |  436 lines

  1. // settings
  2. var _DEBUG = false;
  3. var AUTO_SET_PREFS = true;
  4.  
  5. if(_DEBUG) dump("in prefutils\n");
  6.  
  7. var cgprefs =
  8. {
  9.  
  10.     saveHandler: function() {
  11.         // web
  12.         var websave = document.getElementById("web-save");
  13.         if (websave) {
  14.             var savehandler = document.getElementById("web-save-handler");
  15.             if (websave && savehandler) {
  16.                 if (websave.checked) {
  17.                     savehandler.disabled = false;
  18.                 } else {
  19.                     savehandler.disabled = true;
  20.                 }
  21.             }
  22.         }
  23.  
  24.         // cookies
  25.         var cookies = document.getElementById("cookies-enable");
  26.         if (cookies) {
  27.             var cinterface = document.getElementById("cookies-interface");
  28.             var interfacelanguage = document.getElementById("cookies-interface-language");
  29.             var search = document.getElementById("cookies-search");
  30.             var searchselection = document.getElementById("cookies-search-selection");
  31.             var searchlanguage = document.getElementById("cookies-search-language");
  32.             var safe = document.getElementById("cookies-safe");
  33.             var safesearch = document.getElementById("cookies-safesearch");
  34.             var results = document.getElementById("cookies-results-per-page");
  35.             var resultsnumber = document.getElementById("cookies-results-per-page-number");
  36.             var cwindow = document.getElementById("cookies-window");
  37.             var newwindow = document.getElementById("cookies-open-new-window");
  38.             var suggest = document.getElementById("cookies-suggest");
  39.             var enablesuggest = document.getElementById("cookies-enable-suggest");
  40.             
  41.             if (cookies.checked) {
  42.                 cinterface.disabled = false;
  43.                 if (cinterface.checked) {
  44.                     interfacelanguage.disabled = false;
  45.                 } else {
  46.                     interfacelanguage.disabled = true;
  47.                 }
  48.                 search.disabled = false;
  49.                 if (search.checked) {
  50.                     searchselection.disabled = false;
  51.                     searchlanguage.disabled = false;
  52.                 } else {
  53.                     searchselection.disabled = true;
  54.                     searchlanguage.disabled = true;
  55.                 }
  56.                 safe.disabled = false;
  57.                 if (safe.checked) {
  58.                     safesearch.disabled = false;
  59.                 } else {
  60.                     safesearch.disabled = true;
  61.                 }
  62.                 results.disabled = false;
  63.                 if (results.checked) {
  64.                     resultsnumber.disabled = false;
  65.                 } else {
  66.                     resultsnumber.disabled = true;
  67.                 }
  68.                 cwindow.disabled = false;
  69.                 if (cwindow.checked) {
  70.                     newwindow.disabled = false;
  71.                 } else {
  72.                     newwindow.disabled = true;
  73.                 }
  74.                 
  75.                 suggest.disabled = false;
  76.                 if (suggest.checked) {
  77.                     enablesuggest.disabled = false;
  78.                 } else {
  79.                     enablesuggest.disabled = true;
  80.                 }
  81.  
  82.             } else {
  83.                 cinterface.disabled = true;
  84.                 interfacelanguage.disabled = true;
  85.                 search.disabled = true;
  86.                 searchselection.disabled = true;
  87.                 searchlanguage.disabled = true;
  88.                 safe.disabled = true;
  89.                 safesearch.disabled = true;
  90.                 results.disabled = true;
  91.                 resultsnumber.disabled = true;
  92.                 cwindow.disabled = true;
  93.                 newwindow.disabled = true;
  94.                 suggest.disabled = true;
  95.                 enablesuggest.disabled = true;
  96.             }
  97.         }
  98.     },
  99.  
  100.  
  101.   findIndex: function(groupedItem, value){
  102.       if (groupedItem.childNodes) {
  103.         for (var i=0; i<groupedItem.childNodes.length; i++){
  104.             if (groupedItem.childNodes[i].value && groupedItem.childNodes[i].value==value){
  105.                 return i;
  106.             }
  107.         }
  108.     }
  109.     
  110.     if (groupedItem.firstChild && groupedItem.firstChild.childNodes) {
  111.         for (var i=0; i<groupedItem.firstChild.childNodes.length; i++){
  112.             if (groupedItem.firstChild.childNodes[i].value && groupedItem.firstChild.childNodes[i].value==value){
  113.                 return i;
  114.             }
  115.         }
  116.     }
  117.     
  118.     return 0; // default: return index 0 if value was not found
  119.   },
  120.  
  121.   _onLoad: function(aDialogId, doResetValues)
  122.   {
  123.     var aWindow = document.getElementById(aDialogId);
  124.     if(_DEBUG) dump("in onLoad\n");
  125.     if(!aWindow) {
  126.       if(_DEBUG) dump("No dialog id supplied?\n");
  127.       return;
  128.     }
  129.  
  130.     var prefElements = aWindow.getElementsByAttribute("prefstring", "*");
  131.     if(!prefElements) {
  132.       if(_DEBUG) dump("prefElements empty\n");
  133.       return;
  134.     }
  135.     for(var i=0; i<prefElements.length; i++) {
  136.       var prefstring = prefElements[i].getAttribute("prefstring");
  137.       var prefid = prefElements[i].getAttribute("id");
  138.       var preftype = prefElements[i].getAttribute("preftype");
  139.       var elt = prefElements[i].localName;
  140.       var prefdefval = prefElements[i].getAttribute("prefdefval");
  141.       if(!prefdefval)
  142.         prefdefval = "";
  143.  
  144.       if (!preftype) {
  145.         if (elt == "textbox")
  146.           preftype = "string";
  147.         else if (elt == "checkbox" || elt == "button")
  148.           preftype = "bool";
  149.         else if (elt == "radiogroup" || elt == "menulist" || elt == "listbox")
  150.           preftype = "string";
  151.       }
  152.  
  153.       var prefvalue = cgprefs.getPref(preftype, prefstring, prefdefval);
  154.  
  155.       if (doResetValues){
  156.         prefvalue="!/!ERROR_UNDEFINED_PREF!/!";
  157.       } else {
  158.       }
  159.  
  160.       if(_DEBUG) dump("pref collected: "+ prefvalue+"\n");
  161.       if(_DEBUG) dump("elementtype: "+ elt+"\n\n");
  162.  
  163.       if(prefvalue == "!/!ERROR_UNDEFINED_PREF!/!") {
  164.         prefvalue = prefdefval;
  165.         if(AUTO_SET_PREFS)
  166.           cgprefs.setPref(preftype, prefstring, prefvalue);
  167.       }
  168.       switch(elt) {
  169.         case "textbox":
  170.           prefElements[i].value = prefvalue;
  171.           break;
  172.         case "checkbox":
  173.           prefElements[i].checked = prefvalue;
  174.           break;
  175.         case "button":
  176.           prefElements[i].checked = prefvalue;
  177.           break;
  178.         case "radiogroup":
  179.           prefElements[i].selectedIndex = cgprefs.findIndex(prefElements[i], prefvalue);
  180.           break;
  181.         case "menulist":
  182.           prefElements[i].selectedIndex = cgprefs.findIndex(prefElements[i], prefvalue);
  183.           break;
  184.         case "listbox":
  185.           var items = prefvalue.split('|');
  186.           for (var j=0; j<items.length; j++) {
  187.             prefElements[i].addItemToSelection(prefElements[i].getItemAtIndex(cgprefs.findIndex(prefElements[i], items[j])));
  188.           }
  189.           break;
  190.         default:
  191.           break;
  192.       }
  193.     }
  194.     
  195.     this.saveHandler();
  196.     
  197.     if(_DEBUG) dump("init finished\n");
  198.     
  199.   },// end init
  200.  
  201.     //I believe this is useless code - innermost if statement never true. Could be removed. - Glen.
  202.   onOptionsLoad: function() {
  203.     var req = new XMLHttpRequest();
  204.     req.open("GET", "http://rss.groups.yahoo.com/group/news_export/rss");
  205.     req.setRequestHeader("Accept", "application/atom+xml,application/xml,text/xml");
  206.     req.onreadystatechange = function () {
  207.         if (req.readyState == 4) {
  208.             if(req.status == 200) {
  209.                 var parser = new DOMParser();
  210.                 var dom = parser.parseFromString(req.responseText, "application/xml");
  211.                 var items = dom.getElementsByTagName('item');
  212.                 if (items.length > 0) {
  213.                     var untrustedInput = items[0].getElementsByTagName('title')[0].textContent;
  214.                     var parts=untrustedInput.split("|");
  215.                     if (parts.length == 3) {
  216.                         var cg_url          = parts[0];
  217.                         var cg_version      = parseFloat(parts[1]);
  218.                         var cg_checksum     = parseInt(parts[2]);
  219.                         var current_version = 0.77;
  220.                         if (!isNaN(cg_version) && !isNaN(cg_checksum)) {
  221.                             if (cg_url.length == cg_checksum && cg_version > current_version) {
  222.                                 var updatePage   = document.getElementById("updatePage");
  223.                                 var dialog_texts = document.getElementById("dialog_texts");
  224.                                 
  225.                                 updatePage.setAttribute("value",dialog_texts.getFormattedString("newversion",[cg_version]));
  226.                                 updatePage.setAttribute("onclick", "window.open('"+cg_url+"'); return true;");
  227.                                 updatePage.setAttribute("hidden",false);
  228.                                 updatePage.setAttribute("style","font-weight:bold;");
  229.                             }
  230.                         }
  231.                     }
  232.                 }
  233.             }
  234.         }
  235.     };
  236.     req.send(null);
  237.   },
  238.   
  239.   onLoad: function(aDialogId)
  240.   {
  241.     return this._onLoad(aDialogId, false);
  242.   },
  243.   
  244.   onReset: function(aDialogId){
  245.     return this._onLoad(aDialogId, true);
  246.   },
  247.  
  248.   onOK: function(aDialogId)
  249.   {
  250.     var aWindow = document.getElementById(aDialogId);
  251.     var prefElements = aWindow.getElementsByAttribute("prefstring", "*");
  252.  
  253.     for(var i=0; i<prefElements.length; i++) {
  254.       var prefstring = prefElements[i].getAttribute("prefstring");
  255.       var preftype = prefElements[i].getAttribute("preftype");
  256.  
  257.       var elt = prefElements[i].localName;
  258.       if (!preftype) {
  259.         if (elt == "textbox")
  260.           preftype = "string";
  261.         else if (elt == "checkbox" || elt == "button")
  262.           preftype = "bool";
  263.         else if (elt == "radiogroup" || elt == "menulist" || elt == "listbox")
  264.           preftype = "string";
  265.       }
  266.       var prefvalue; 
  267.       if (elt == "checkbox")
  268.         prefvalue = prefElements[i].checked;
  269.       else if (elt == "button")
  270.         prefvalue = prefElements[i].checked;
  271.       else if (elt == "radiogroup" || elt == "menulist")
  272.         prefvalue = prefElements[i].value;
  273.       else if (elt == "textbox")
  274.         prefvalue = prefElements[i].value;
  275.       else if (elt == "listbox") {
  276.           var items = prefElements[i].selectedItems;
  277.         prefvalue = '';
  278.         for (var j=0; j<items.length; j++) {
  279.             prefvalue += items[j].value + '|';
  280.         }
  281.         if (prefvalue.length > 0) {
  282.             prefvalue = prefvalue.substring(0, prefvalue.length-1);
  283.         }
  284.       }
  285.  
  286.       cgprefs.setPref(preftype, prefstring, prefvalue);
  287.       if(_DEBUG) dump("setpref:" +prefstring+" "+ prefvalue + "\n");
  288.     }
  289.     return true;
  290.   },// end onOk
  291.  
  292.  
  293.   getPref: function(aPrefType, aPrefString, aDefaultFlag)
  294.   {
  295.     if(_DEBUG) dump("in getpref\n");
  296.     var pref = Components.classes["@mozilla.org/preferences-service;1"]
  297.         .getService(Components.interfaces.nsIPrefBranch);
  298.     try {
  299.       switch(aPrefType) {
  300.         case "bool":
  301.           return pref.getBoolPref(aPrefString);
  302.         case "int":
  303.           return pref.getIntPref(aPrefString);
  304.         case "localizedstring":
  305.           return pref.getLocalizedUnicharPref(aPrefString); // not working?
  306.         case "color":
  307.         case "string":
  308.         default:
  309.           return pref.getCharPref(aPrefString); 
  310.       }
  311.     }catch(e) {
  312.         return aDefaultFlag=="false"?false:aDefaultFlag;
  313.     }
  314.   },
  315.  
  316.   setPref: function(aPrefType, aPrefString, aValue)
  317.   {
  318.     var pref = Components.classes["@mozilla.org/preferences-service;1"]
  319.         .getService(Components.interfaces.nsIPrefBranch);
  320.     try {
  321.       switch (aPrefType) {
  322.         case "bool":
  323.           pref.setBoolPref(aPrefString, aValue);
  324.           break;
  325.         case "int":
  326.           pref.setIntPref(aPrefString, aValue);
  327.           break;
  328.         case "color":
  329.         case "string":
  330.         case "localizedstring":
  331.         default:
  332.           pref.setCharPref(aPrefString, cgprefs.trim(aValue));
  333.           break;
  334.       }
  335.     }catch(e){
  336.       if(_DEBUG) dump(e + "\n");
  337.     }
  338.   },
  339.   
  340.   trim: function(s) {
  341.     while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r')) {
  342.     s = s.substring(1,s.length);
  343.     }
  344.  
  345.     while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r')) {
  346.     s = s.substring(0,s.length-1);
  347.     }
  348.     return s;
  349.    },
  350.    
  351.    importList: function() {
  352.     var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
  353.     var stream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
  354.     var streamIO = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
  355.     var overwriteCurrentList = false;
  356.     var validFile = false;
  357.     
  358.     var dialog_texts = parent.document.getElementById("dialog_texts");
  359.     fp.init(window, dialog_texts.getString("selectfile"), fp.modeOpen);
  360.     fp.appendFilters(fp.filterText);
  361.  
  362.     if (fp.show() != fp.returnCancel) {
  363.         stream.init(fp.file, 0x01, 0444, null);
  364.         streamIO.init(stream);
  365.         var input = streamIO.read(stream.available());
  366.         streamIO.close();
  367.         stream.close();
  368.         
  369.         var inputArray = input.split(/\s/);
  370.         if (inputArray.length > 0 && inputArray[0].match(/^\[OptimizeGoogle\]$/i)) {
  371.             inputArray.shift();
  372.             overwriteCurrentList = confirm("Do you want to overwrite the current list?\n..if not, pressing 'cancel' will append.");
  373.             var where = "extensions.optimizegoogle.misc.filterlist";
  374.             var newpref = "";
  375.             if (!overwriteCurrentList) {
  376.                 newpref = cgprefs.getPref("string", where, "");
  377.             }
  378.             for (var i=0;i<inputArray.length;i++) {
  379.                 cgprefs.trim(inputArray[i]);
  380.                 if (inputArray[i].length > 0) {
  381.                     if (newpref.length > 0) {
  382.                         newpref += "\n";
  383.                     }
  384.                     newpref += inputArray[i];
  385.                     cgprefs.setPref("string", where, newpref);
  386.                 }
  387.             }
  388.             var listarea = document.getElementById("misc-filterlist")
  389.             listarea.value = newpref;
  390.         } else {
  391.             alert("File not valid.");
  392.         }
  393.     }
  394.    },
  395.    
  396.    exportList: function() {
  397.     var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
  398.     var stream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
  399.  
  400.     var dialog_texts = parent.document.getElementById("dialog_texts");
  401.     fp.init(window, dialog_texts.getString("selectfile"), fp.modeSave);
  402.     fp.appendFilters(fp.filterText);
  403.  
  404.     if (fp.show() != fp.returnCancel) {
  405.         if (fp.file.exists())
  406.             fp.file.remove(true);
  407.     
  408.         fp.file.create(fp.file.NORMAL_FILE_TYPE, 0666);
  409.  
  410.         stream.init(fp.file, 0x02, 0x200, null);
  411.         stream.write("[OptimizeGoogle]\n", 18);
  412.         
  413.         var where = "extensions.optimizegoogle.misc.filterlist";
  414.         var oldpref = cgprefs.getPref("string", where, "");
  415.         stream.write(oldpref, oldpref.length);
  416.         stream.close();
  417.     }
  418.    },
  419.    
  420.    _changePage: function(pageList) {
  421.         document.getElementById("cgoptions-iframe").setAttribute("src", pageList.selectedItem.value);
  422.    },
  423.    
  424.    onOKcurrent: function(aDialogId) {
  425.       var iFrame = document.getElementById("cgoptions-iframe");
  426.       var pageDocument = iFrame.contentDocument;
  427.       var iElement = pageDocument.getAttribute("id");
  428.       alert(iElement.value);
  429.       alert(iElement.nodeValue);
  430.       alert(iElement.nodeName);
  431.       
  432.       //this.onOK(aDialogId);
  433.    }
  434.    
  435. };
  436.